// Copyright © SixtyFPS GmbH <info@slint.dev>
// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-1.2 OR LicenseRef-Slint-commercial

export enum Foo { bli, bla, blu }

// (override the builtin 'InputType')
export enum InputType { Xxx, Yyy, Zzz }

export enum With-dash { hallo, hello-world,  halloWorld}

export component TestCase  {
    in-out property<Foo> foo: Foo.bla;
    in-out property<Foo> default;

    in-out property<InputType> input-type: InputType.Xxx;

    out property <bool> test: foo == Foo.bla && default == Foo.bli && input-type == InputType.Xxx;

    in property <With-dash> dash: halloWorld;
}

/*
```rust
let instance = TestCase::new().unwrap();

assert_eq!(instance.get_foo(), Foo::Bla);
assert!(instance.get_test());
instance.set_foo(Foo::Blu);
assert!(!instance.get_test());

assert_eq!(instance.get_dash(), With_dash::HalloWorld);
instance.set_dash(With_dash::Hallo);
instance.set_dash(With_dash::HelloWorld);

```

```cpp
auto handle = TestCase::create();
const TestCase &instance = *handle;

assert(instance.get_foo() == Foo::Bla);
assert(instance.get_test());
instance.set_foo(Foo::Blu);
assert(!instance.get_test());

assert(instance.get_dash() == With_dash::HalloWorld);
instance.set_dash(With_dash::Hallo);
instance.set_dash(With_dash::HelloWorld);
```

*/
